package BackBeans;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import vo.CuentaBancaria;
import vo.Usuario;
import constantes.ComandosNavegacion;
import delegados.DelegadoControlUsuarios;

public class CuentaUsuarioBean 
{
	private String login;
	private String password;
	private String confirmarPassword;
	private String nombreUsuario;
	private String apellidosUsuario;
	private String correoElectronico;
	
	private int numeroCuenta;
	private int tipoCuenta;
	
	private int banco;

	String logrado="";
	
	public String getLogrado() {
		return logrado;
	}

	public void setLogrado(String logrado) {
		this.logrado = logrado;
	}

	
	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getConfirmarPassword() {
		return confirmarPassword;
	}

	public void setConfirmarPassword(String confirmarPassword) {
		this.confirmarPassword = confirmarPassword;
	}

	public String getNombreUsuario() {
		return nombreUsuario;
	}

	public void setNombreUsuario(String nombreUsuario) {
		this.nombreUsuario = nombreUsuario;
	}

	public String getApellidosUsuario() {
		return apellidosUsuario;
	}

	public void setApellidosUsuario(String apellidosUsuario) {
		this.apellidosUsuario = apellidosUsuario;
	}

	public String getCorreoElectronico() {
		return correoElectronico;
	}

	public void setCorreoElectronico(String correoElectronico) {
		this.correoElectronico = correoElectronico;
	}

	public int getNumeroCuenta() {
		return numeroCuenta;
	}

	public void setNumeroCuenta(int numeroCuenta) {
		this.numeroCuenta = numeroCuenta;
	}

	public int getTipoCuenta() {
		return tipoCuenta;
	}

	public void setTipoCuenta(int tipoCuenta) {
		this.tipoCuenta = tipoCuenta;
	}

	public int getBanco() {
		return banco;
	}

	public void setBanco(int banco) {
		this.banco = banco;
	}

	public String crearCuenta()
	{
		logrado="";
		
		DelegadoControlUsuarios delegadoControlUsuarios = new DelegadoControlUsuarios();
		
		if(confirmarPassword.equals(password))
		{
			Usuario usuario = new Usuario(-1,login,password,nombreUsuario,apellidosUsuario,correoElectronico);
			CuentaBancaria cuentaBancaria = new CuentaBancaria(-1,numeroCuenta,tipoCuenta,banco);
			
			if(delegadoControlUsuarios.ingresarUsuario(usuario, cuentaBancaria))
			{
				logrado = "Cuenta creada SATISFACTORIAMENTE";
			}
			else
			{
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Ya existe un Usuario con ese login"));
				return null;
			}
		}
		else
		{
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("La confirmacion del password no es correcta"));
		}
		
		limpiarVariables();
		
		return ComandosNavegacion.COMANDOBIENVENIDA;
	}
	

	public String actualizarCuenta()
	{
		logrado="";
		
		DelegadoControlUsuarios delegadoControlUsuarios = new DelegadoControlUsuarios();
		
		if(confirmarPassword.equals(password))
		{
			Usuario usuario = (Usuario)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("Usuario");
			Usuario nuevoUsuario = new Usuario(-1,usuario.getLogin(),password,nombreUsuario,apellidosUsuario,correoElectronico);
			CuentaBancaria cuentaBancaria = new CuentaBancaria(-1,numeroCuenta,tipoCuenta,banco);
			
			if(delegadoControlUsuarios.actualizarUsuario(usuario, nuevoUsuario, cuentaBancaria))
			{
				logrado = "Cuenta Actualizada SATISFACTORIAMENTE";
				
			}
			else
			{
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("No se pudo llevar a cabo la actualizacion"));
			}
		}
		else
		{
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("La confirmacion del password no es correcta"));
		}
		
		return ComandosNavegacion.COMANDOCUENTAUSUARIO;
	}
	
	private void limpiarVariables() 
	{
		 login="";
		 password="";
		 confirmarPassword="";
		 nombreUsuario="";
		 apellidosUsuario="";
		 correoElectronico="";
		
		 numeroCuenta=0;
		 tipoCuenta=0;
		
		 banco=0;		
	
	}
	
	public String irCrearCuenta()
	{
		this.limpiarVariables();
		return ComandosNavegacion.COMANDOCREARCUENTAUSUARIO;
	}
	
	public String irModificarCuenta()
	{
		DelegadoControlUsuarios delegadoControlUsuarios = new DelegadoControlUsuarios();
		Usuario usuario = (Usuario)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("Usuario");
		
		if(usuario!=null)
		{
			usuario = delegadoControlUsuarios.obtenerUsuario(usuario);
			CuentaBancaria cuenta = delegadoControlUsuarios.obtenerCuentaBancaria(usuario);
			
			login = usuario.getLogin();
			password = usuario.getPassword();
			nombreUsuario = usuario.getNombre();
			apellidosUsuario = usuario.getApellidos();
			correoElectronico = usuario.getCorreoElectronico();
			banco = cuenta.getBanco();
			tipoCuenta = cuenta.getTipoCuenta();
			numeroCuenta = cuenta.getNumeroCuenta();
			
			return ComandosNavegacion.COMANDOCUENTAUSUARIO;
		}
		else
		{
			return ComandosNavegacion.COMANDOCUENTAUSUARIO;
		}
	}
	
}
